#ifndef SCREENMANAGER_H
#define SCREENMANAGER_H

#include <QObject>
#include <QRect>
#include <QList>
#include <QScreen>
#include <QApplication>

class ScreenManager : public QObject
{
    Q_OBJECT

public:
    explicit ScreenManager(QObject *parent = nullptr);
    
    // 获取主屏幕可用几何区域（排除任务栏）
    QRect getPrimaryScreenAvailableGeometry() const;
    
    // 获取所有屏幕的列表
    QList<QScreen*> getAllScreens() const;
    
    // 获取所有屏幕的可用几何区域
    QList<QRect> getAllScreensAvailableGeometry() const;
    
    // 获取指定屏幕的可用几何区域
    QRect getScreenAvailableGeometry(QScreen *screen) const;
    
    // 获取屏幕数量
    int getScreenCount() const;
    
    // 获取虚拟桌面的几何区域
    QRect getVirtualGeometry() const;
    
    // 获取扩展模式下的所有屏幕区域（排除任务栏）
    QList<QRect> getMultiScreenAvailableGeometry() const;
    
    // 计算最佳窗口布局以覆盖所有屏幕（排除任务栏）
    QRect getOptimalMultiScreenLayout() const;

private:
    void initializeScreens();
    
    QList<QScreen*> screens;
};

#endif // SCREENMANAGER_H